home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Text⁄Files / Writeswell Jr. 1.0.2 Master / WSI Library Source / MyFolders.c < prev    next >
Text File  |  1992-04-23  |  2KB  |  96 lines

  1. /* MyFolders.c
  2.  * Deal with finding and creating folders
  3.  * ©1992 Working Software, Inc.
  4.  * This source code is copyrighted.  Permission is granted to use the Word Services
  5.  * portion of the Writeswell Jr. source code in your own programs, but you 
  6.  * may not distribute the Writeswell Jr. word-processor code as a 
  7.  * commercial product.  If you modify the code, please do not call it 
  8.  * Writeswell Jr. (or Writeswell.)  This will ensure that people understand the 
  9.  * program and don’t have to deal with a number of different versions with 
  10.  * who-knows-what going on in the code.
  11.  * 
  12.  * Writeswell Jr. and Writeswell are trademarks of Working Software, Inc.
  13.  * 17 Feb 91 Mike Crawford
  14.  */
  15. #include "MyFolders.h"
  16.  
  17. OSErr GetSysVolID( short *sysVolRefNumPtr, long *blessedIDPtr )
  18. {
  19.     WDPBRec wPB;
  20.     SysEnvRec envRec;
  21.     OSErr result;
  22.     short i;
  23.     char *myPtr;
  24.     Str31 name;
  25.  
  26.     if ( result = SysEnvirons( curSysEnvVers, &envRec ) ){
  27.         return result;
  28.     }
  29.  
  30. /*    
  31.     ClearBlock( (char*)&wPB, (short)sizeof( wPB ) );
  32. */
  33.     wPB.ioNamePtr = name;
  34.     wPB.ioVRefNum = envRec.sysVRefNum;    
  35.     wPB.ioWDIndex = 0;
  36.     wPB.ioWDProcID = '\0\0\0\0';
  37.     wPB.ioWDVRefNum = 0;
  38.     
  39.     result = PBGetWDInfo( &wPB, false );
  40.     
  41.     if ( result ){
  42.         return result;
  43.     }
  44.     
  45.     *sysVolRefNumPtr = wPB.ioWDVRefNum;
  46.     *blessedIDPtr = wPB.ioWDDirID;
  47.     
  48.     return noErr;
  49.  
  50. }/* GetSysVolID */
  51.  
  52. OSErr MakeFolder( long *idPtr, short volRefNum, long parentID, StringPtr name )
  53. {
  54.     HParamBlockRec fPB;
  55.     OSErr result;
  56.     
  57.     fPB.fileParam.ioCompletion = (ProcPtr)NULL;
  58.     fPB.fileParam.ioNamePtr = name;
  59.     fPB.fileParam.ioVRefNum = volRefNum;
  60.     fPB.fileParam.ioDirID = parentID;
  61.     
  62.     result = PBDirCreate( &fPB, false );
  63.     
  64.     if ( result ){
  65.         return result;
  66.     }
  67.     
  68.     *idPtr = fPB.fileParam.ioDirID;    /* This is the dirID of the newly created folder */
  69.  
  70.     return noErr;
  71. }/* MakeFolder */
  72.  
  73. /* The following is adapted from Richard Reich's "findDirectory" function */
  74.  
  75. OSErr FindDirectory(short volNum, long parentDirID, StringPtr name, long *dirID)
  76. {
  77.     CInfoPBRec pb;
  78.     register OSErr err;
  79.  
  80. /*
  81.     ClearBlock( (char*)&pb, (short)sizeof( pb ) );
  82. */
  83.  
  84.     pb.dirInfo.ioFDirIndex = 0;            /* Look up by name and parent vRefNum */
  85.     pb.dirInfo.ioNamePtr = name;
  86.     pb.dirInfo.ioVRefNum = volNum;
  87.     pb.dirInfo.ioDrDirID = parentDirID;
  88.     err = PBGetCatInfo(&pb, FALSE);
  89.     if (err != noErr && err != fnfErr)
  90.         return (err);
  91.     if (err == fnfErr || (pb.dirInfo.ioFlAttrib & ioDirMask) == 0)
  92.         return (dirNFErr);
  93.     *dirID = pb.dirInfo.ioDrDirID;
  94.     return (err);
  95. }/* FindDirectory */
  96.